🧭 Kubernetes | August 21, 2021
쿠버네티스의 동작방식과 네임스페이스 구조를 알아봅시다!
쿠버네티스에 사용할 컨테이너 이미지를 저장소에 이미지 push
kubectl의 yaml 형태든, CLI 형태든 명령어를 입력하게 되면,REST API Server가 명령어를 받아서 명령어에 맞게 요청을 받음etcd의 상태 정보를 확인Scheduler 입니다. 스케줄러는 REST API Server에게 적절하게 판단해 응답REST API Server는 해당하는 노드의 kubelet에게 요청요청을 받은 kubelet은 해당 명령어를 실제 컨테이너 엔진을 담당하는 docker 데몬 전달
알아두기
모든 컴포넌트는 마스터 노드의 API Server를 거쳐 운영됩니다.
etcd
kubelet안에는 cAdvisor가 있는데 워커노드의 상태정보를 모니터링하고, 해당 정보를 마스터노드의 REST API server에 전달 후 etcd에 전달schduler
REST API Server 반환controller
K8S API 종류 중 하나
알아두면 좋은 정보!
kubectl get pod(파드가 없는 상태에서) 명령어 실행 시, No resources found in default namespace.
메시지를 볼 수 있는데 이는 네임스페이스를 지정해주지 않을 시, 기본 네임스페이스를 사용한다는 것을 유추할 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- image: nginx:1.14
name: nginx
ports:
- containerPort: 80
- containerPort: 443yaml 파일로 실행 및 확인
$ kubectl create -f nginx.yaml
$ kubectl get pods$ kubectl create namespace blueorange 네임스페이스에 yaml 파일로 생성 & 실행
--dry-run 옵션은 실제로 실행하지 않고, 실행여부를 확인$ kubectl create namespace orange --dry-run -o yaml > orange-ns.yaml
$ kubectl create -f orange-ns.yaml -n orange$ kubectl create -f nginx.yaml -n blueapiVersion: v1
kind: Pod
metadata:
name: mypod
namespace: orange # 네임스페이스 지정
spec:
containers:
- image: nginx:1.14
name: nginx
ports:
- containerPort: 80
- containerPort: 443이처럼 CLI, yaml 2가지의 방식을 통해 실행할 수 있습니다.
config 명령어를 통해 기본 context 정보 확인$ kubectl config viewconfig set-context 명령어를 통해 새로운 context를 추가
$ kubectl config set-context blue --cluster=kubernetes --user=kubernetes-admin --namespace=blue$ kubectl config use-context blue현재 지정된 네임스페이스 확인
$ kubectl config current-context$ kubectl config use-context kubernetes-admin@kubernetes$ kubectl delete namespace blue주의사항!
하나의 네임스페이스 안에 여러 리소스가 존재하게 되는데, 네임스페이스를 지우게 된다면 안에 있는 리소스 모두 같이 삭제됩니다.